#### 9.3.3 ARC Machine Directives

The ARC version of `as` supports the following additional machine directives:

`.lcomm` symbol`,` length`[,` alignment`]`
  Reserve length (an absolute expression) bytes for a local common denoted by symbol. The section and value of symbol are those of the new local common. The addresses are allocated in the bss section, so that at run-time the bytes start off zeroed. Since symbol is not declared global, it is normally not visible to `ld`. The optional third parameter, alignment, specifies the desired alignment of the symbol in the bss section, specified as a byte boundary (for example, an alignment of 16 means that the least significant 4 bits of the address should be zero). The alignment must be an absolute expression, and it must be a power of two. If no alignment is specified, as will set the alignment to the largest power of two less than or equal to the size of the symbol, up to a maximum of 16.

`.lcommon` symbol`,` length`[,` alignment`]`
  The same as `lcomm` directive.

  The `.cpu` directive must be followed by the desired core version. Permitted values for CPU are:

  `ARC600`
    Assemble for the ARC600 instruction set.
  `ARC700`
    Assemble for the ARC700 instruction set.
  `EM`
    Assemble for the ARC EM instruction set.
  `HS`
    Assemble for the ARC HS instruction set.

  Note: the `.cpu` directive overrides the command line option `-mcpu=`cpu; a warning is emitted when the version is not consistent between the two.